TCP/IP is a connection-oriented packet-switched data transfer protocol of the transport layer. The reliability of TCP is implemented by means of sequence numbers and acknowledgements (ACKs). The data octets are numbered and packed into segments of various sizes for transmission. The receiver is required to provide a positive acknowledgement to the octets sent. If an acknowledgement is not received during a predetermined time-out interval, the data is resent.
The TCP data flow is controlled by so-called sliding windows. In connection with acknowledgements, the receiver informs the transmitter of a reception window by means of which the receiver indicates up to which sequence number the receiver is capable of receiving data at the moment in question. In other words this reception window indicates the allowed amount of non-acknowledged octets which can be transferred “from the point of view of the receiver”. The receiver controls the data flow by adjusting the size of the reception window. The transmitter in turn controls the flow by means of its own congestion window. In the so-called slow start the congestion window is set to be small at the beginning of the connection and, in principle, it is increased until time-out occurs or the size of the congestion window reaches the size of the receiver's reception window. The window in which the transmitter sends data is determined on the basis of both the transmitter's congestion window and the receiver's reception window so that the smaller of these determines the size of the window in which data is sent. In other words, the transmitter sends data in a window whose size is min(the size of the transmitter's congestion window, the size of the receiver's reception window).
The slow start and the concept of a congestion window mentioned above have been defined in the standard RFC2581 (April 1999) of the Internet Engineering Task Force (IETF). In addition, requirements for TCP protocol implementations have been laid down in section 4.2 of the IETF standard RFC1122 (October 1989), among others. (Various features of TCP implementations have also been defined in other IETF standards.)
TCP was originally designed to be used in wired networks in which the connection used by the TCP end points is mainly stable, such as an Ethernet connection. Therefore the control mechanisms of TCP have mainly been designed for stable connections. In wireless networks the situation is different, because a single wireless client device can support a plurality of different link-level transmission paths, which include, for example, Circuit Switched Data (CSD), High Speed Circuit Switched data (HSCSD), General Packet Radio Service (GPRS), Enhanced GPRS (EGPRS), Code Division Multiple Access (CDMA), Wideband CDMA (WCDMA), Bluetooth and Wireless Local Area Network (WLAN) and which provide service to upper protocol layers, such as transfer of TCP/IP data over a cellular network. Each of these transmission paths has different connection-level characteristics (for example, bandwidth and Round Trip Time (RTT)).
The capacity of a wireless link can be calculated as follows:capacity (bits)=bandwidth (bits/sec)*RTT (sec).This is called a Bandwidth Delay Product (BDP). In wireless links this can vary widely depending on the wireless transmission path and consequently the connection level of a single wireless client device can vary and the upper level TCP protocol is required to adjust to these variations.
The size of the reception window required to maximize the TCP throughput is calculated on the basis of BDP. If the reception window is too small in terms of the available bandwidth, the TCP connection cannot fully utilize the available data transfer capacity. If, on the other hand, the reception window is too large, the transmitter's congestion window increases up to a point where TCP causes congestion in the network by a too large amount of segments and some of the segments do not reach as far as the receiver or arrive too late at the receiver. Usually the size of the reception window is hardcoded in TCP implementations, or the size of the window is permanently set at some default value or the user can be allowed an opportunity to adjust the size of the reception window by means of a Socket Application Programming Interface (API). However, this is not an optimal solution in a wireless environment as will be explained in greater detail below in connection with the detailed description of the invention.